<?php

class programaController extends Controller
{
    public function __construct(){
        parent::__construct();
    }
    public function email(){
        $programa = $this->loadModel('programa');
        $programa->open();
        if(!$programa->get('id', $this->filtrarInt($_POST['id']))){
            return false;
        }
        $fecha = $programa->_fecha_programacion;
        $reprogramar = $this->loadModel('reprogramacion');
        $reprogramar->open();
        
        $auditores = $this->loadModel('auditor');
        $auditores->open();
        
        $auditor = $auditores->getAuditor($programa->_auditor);
        $reprogramacion = $reprogramar->getReprogramaciones(get_class($this));
        
        if($programa->_fecha_compromiso !== null ){
            $fecha = $programa->_fecha_compromiso;
        }
        if(isset($reprogramacion[$programa->_id])){
            $fecha = $reprogramacion[$programa->_id][0]['fecha'];
        }
        
        switch($programa->_auditoria){
            case '30':
                $datos = array();
                break;
            case '31':
                $datos = $programa->getProceso($programa->_auditar);
                break;
            case '32':
                $datos = $programa->getEAD($programa->_auditar);
                break;
            case '38':
                $datos = array();
                //$dat = $programa->getProveedores();
                break;
        }
        
        $data = [
            'para'=>$auditor[0]['extra'],
            'asunto'=>$_POST['asunto'],
            'cabeza'=>$_POST['titulo'],
            'cuerpo'=>"Auditoria programada para el dia $fecha Auditar: ".$datos['area']." Despues de terminar la auditoria favor de entrar al <a href='http://servidor1:82/auditorias/index'>sistema de control de auditorias</a> a realizar sus respectivas capturas",
        ];
        $mail = $this->loadModel('Email');
        $mail->sendMail($data);
        echo "correo enviado exitosamente";
    }
    
    public function index($pagina = false){
        //$this->_view->setLayout("easyui");
        $programa = $this->loadModel('programa');
        $programa->open();
        $procesos = $programa->getAuditorias();
        $reprogramar = $this->loadModel('reprogramacion');
        $reprogramar->open();
        
        $render = "index2";
        
        foreach($procesos as $proceso){
            $dat = array();
            
            switch($proceso['id_proceso']){
            case '30':
                $datas = $programa->getAreas();
                break;
            case '31':
                $datas = $programa->getProcesos();
                break;
            case '32':
                $datas = $programa->getEADs();
                break;
            case '38':
                $datas = array();
                //$dat = $programa->getProveedores();
                break;
            }
            
            foreach ($datas as $data){
                $dat[$data['id']] = $data['area'];
            }
            
            $datos[$proceso['id_proceso']] = $dat;
        }
        
        if(Session::get('level') == 'Lider'){
            $agenda = $programa->getAgenda();
        }else{
            $agenda = $programa->getAgenda(Session::get('user'));
        }
        
        
        
		$this->_view->assign('procesos', $procesos);
        $this->_view->assign('areas', $datos);
        $this->_view->assign('rep', $reprogramar->getReprogramaciones(get_class($this)));
        $this->_view->assign('lista', $agenda);
        $this->_view->assign('titulo', 'Agenda :: Lista');
        
        if($this->getInt('guardar') == 1){
            unset($_POST['guardar']);
            
            if(!$this->getTexto('fecha')){
                $this->_view->assign('_error', 'Debe Seleccionar fecha de reprogramacion');
                $this->_view->renderizar($render, 'agenda');
                exit;
            }
            
            if(!$this->getTexto('comentarios')){
                $this->_view->assign('_error', 'no se a tecleado el motivo de reprogramacion');
                $this->_view->renderizar($render, 'agenda');
                exit;
            }
            
            $_POST['class'] = get_class($this);
            if(!$reprogramar->insert($_POST)){
                $this->_view->assign('_error', 'Ocurrio un error al intentar reporgramar el evento');
            }
            
        }
        
        $this->_view->renderizar($render, 'agenda');
    }
    
    public function nuevo($id){
        //Session::accessStrict(array('admin'));
        $programa = $this->loadModel('programa');
        $programa->open();
        $options = "";
        
        $render = 'nuevo';
        
        $this->_view->assign('titulo', 'Nuevo entrada');

        switch($id){
            case '30':
                $datos = $programa->getAreas();
                
                break;
            case '31':
                $datos = $programa->getProcesos();
                break;
            case '32':
                $datos = $programa->getEADs();
                
                break;
            case '38':
                $datos = array();
                //$dat = $programa->getProveedores();
                break;
        }
        
        //CARGAR LISTA DE USUARIOS
        foreach($datos as $dato){
            $options .= "<option value='" . $dato['id'] . "'>" . $this->getTexto2($dato['area']) . "</option>";
        }
        $this->_view->assign('datos', array(
            'auditoria' => $id
        ));
        $this->_view->assign('options', $options);
        
        if($this->getInt('guardar') == 1){
            
            $this->_view->assign('datos', $_POST); //Regresa los datos en caso de un error
            
            //Validacion de datos
            if(!$this->getTexto('fecha_programacion')){
                $this->_view->assign('_error', 'Debe Seleccionar fecha de inicio para las auditorias');
                $this->_view->renderizar($render, 'agenda');
                exit;
            }
            
            $areas = $_POST['areas'];
            $fecha = $_POST['fecha_programacion'];
            //var_dump($areas);exit;
            unset($_POST['guardar']);
            unset($_POST['areas']);
            
            $dat = $_POST;
            
            foreach($areas as $area){
                $dat['auditar'] = $area;
                $dat['fecha_programacion'] = $fecha;
                $dat['fecha_compromiso'] = $fecha;
                
                if(!$programa->insert($dat)){
                    $this->_view->assign('_error', 'Ocurrio un error al intentar dar de alta al usuario');
                    $this->_view->renderizar($render, 'agenda');
                }
                
                $fecha = date('w',strtotime($fecha)) != 5 ? date('Y-m-d',strtotime('+ 1 day',strtotime($fecha))) : date('Y-m-d',strtotime('+ 3 day',strtotime($fecha)));;
            }
            $this->redireccionar('auditorias/programa');
        }       
        
        $this->_view->renderizar($render, 'agenda');
    }
    
    public function editar($id){
        $programa = $this->loadModel('programa');
        $programa->open();

        if(!$this->filtrarInt($id)){
            $this->redireccionar('auditorias/programa');
        }
        
        if(!$programa->get('id', $this->filtrarInt($id))){
            $this->redireccionar('auditorias/programa');
        }
        
        $modelo = &$programa;
        
        $auditores = $this->loadModel('auditor');
        $auditores->open();
        
        $ids[] = 0;
        $nombres[] = "Selecicone Auditor....";
        
        foreach($auditores->getAuditores() as $auditor){
            $ids[] = $auditor['id_usuario'];
            $nombres[] = $auditor['nombre'] . " " . $auditor['apellidos'];
        }
        
        switch($modelo->_auditoria){
            case '30':
                $datos = array();
                break;
            case '31':
                $datos = $programa->getProceso($modelo->_auditar);
                break;
            case '32':
                $datos = $programa->getEAD($modelo->_auditar);
                break;
            case '38':
                $datos = array();
                //$dat = $programa->getProveedores();
                break;
        }
        
        $this->_view->assign('proceso', $programa->getProceso($modelo->_auditoria));
        $this->_view->assign('auditar', $datos);
        $this->_view->assign('option_id', $ids);
        $this->_view->assign('option_nombres', $nombres);
        
        $this->_view->assign('titulo', 'Asignar auditor');
        
        $grupos = $this->loadModel('Grupo');
        $grupos->open();

        $grupos = $grupos->lista("
            SELECT *
            FROM adic.Grupo
            WHERE adic.Grupo.auditoria = " . $modelo->_auditoria
        );
        
        foreach($grupos as $grupo){
            $option_grupo_id[] = $grupo['id'];
            $option_grupo[] = $grupo['descrip']; 
        }
        
        $this->_view->assign('checklist', "");
        $this->_view->assign('checklist_name', $option_grupo);
        $this->_view->assign('checklist_id', $option_grupo_id);
        
        if(count($grupos) == 1){
            $this->_view->assign('checklist', $grupos[0]['id']);
        }
        
        if($this->getInt('guardar') == 1){
            $this->_view->assign('datos', $_POST);
            
            if(!$this->getInt('auditor') && $_POST['auditor'] != 0){
                $this->_view->assign('_error', 'Debe Seleccionar una clasificacion para el auditor');
                $this->_view->renderizar('editar', 'agenda');
                exit;
            }
            
            $check = $_POST['checklist'];
            
            unset($_POST['guardar']);
            unset($_POST['checklist']);
            
            $programa->edit('id', $id, $_POST);
            $eval = $this->loadModel('checklist');
            $eval->open();
            
            foreach($check as $ch){
                if(count($eval->getEvaluacion($id,$ch['id'])) == 0){
                    $eval->setEvaluacion($id,$ch['id']);
                }
            }
            
            $this->redireccionar('auditorias/programa');
        }
        
        $this->_view->assign('datos', $modelo->_data);
        $this->_view->renderizar('editar', 'agenda');
    }
    
    public function eliminar($id){
        //Session::accessStrict(array('admin'));
        
        $programa = $this->loadModel('programa');
        $programa->open();
        
        if(!$this->filtrarInt($id)){
            $this->redireccionar('auditorias/programa');
        }
        
        if(!$programa->get('id', $this->filtrarInt($id))){
            $this->redireccionar('auditorias/programa');
        }
        
        if(!$programa->del('id', $this->filtrarInt($id))){
            $this->_view->assign('_error', 'Ocurrio un error al intentar eliminar el usuario');
            $this->_view->renderizar('nuevo', 'agenda');
            exit;
        }
        $this->redireccionar('auditorias/programa');
    }
    
    public function auditar($id,$auditoria){
        $grupo = $this->loadModel('grupo');
        $grupo->open();
        
        $grupo->get('auditoria',$auditoria);
        
        $preguntas = $this->loadModel('checklist');
        $preguntas->open();

        $lista_preguntas = $preguntas->getPreguntas($grupo->_id);
        
        $group = "";
        
        foreach($lista_preguntas as $pregunta){
            if($pregunta['categoria'] != $group){
                $group = $pregunta['categoria'];
            }
            $grupo_preg[$group]['nombre'] = $group;
            unset($pregunta['categoria']);
            $grupo_preg[$group][] = $pregunta;
        }
        
        if(isset($_POST['guardar'])){
            unset($_POST['guardar']);
            
            $auditoria = $this->loadModel('Evaluacion');
            $auditoria->open();
            
            $eval = $auditoria->getEval($id);
            
            //print_r($eval);exit;
            
            $count = 1;
            while(isset($_POST['preg_' . $count])){
                $data = array(
                    'ideval' => $eval['id'],
                    'pregunta' => $_POST['preg_' . $count],
                	'respuesta' => $_POST['res_' . $count],
                	'observacion' => $_POST['observaciones_' . $count]
                );
                if(!$auditoria->insert($data)){
                    $this->_view->assign('_error', 'Ocurrio un error al intentar guardar la auditoria');
                    $this->_view->renderizar('auditar', 'agenda');
                    exit;
                }
                $count++;
            }
            $auditoria->updateEval($eval['id']);
            $programa = $this->loadModel('programa');
            $programa->open();
            $programa->edit('id', $id, array('status' => '3'));
            $this->redireccionar('auditorias/programa');
        }
        
        $this->_view->assign('datos', $grupo_preg);
        $this->_view->renderizar('auditar', 'agenda');
    }
    
    public function reprogramar(){
        $programa = $this->loadModel('programa');
        $programa->open();
    }
    
    public function getAgenda(){
        
    } 
}

?>
